#Boa:Frame:pedVendaFrame

import wx
import wx.grid
import time
from CONTROLE import *


def create(parent):
    return pedVendaFrame(parent)

[wxID_PEDVENDAFRAME, wxID_PEDVENDAFRAMECODIGO, wxID_PEDVENDAFRAMECODIGO, 
 wxID_PEDVENDAFRAMEFECHAPEDIDO, wxID_PEDVENDAFRAMEINSEREITEMBTN, 
 wxID_PEDVENDAFRAMELISTBOX1, wxID_PEDVENDAFRAMENOME, 
 wxID_PEDVENDAFRAMEPED_VENDA_COD, wxID_PEDVENDAFRAMEPED_VENDA_DATA, 
 wxID_PEDVENDAFRAMEPED_VENDA_TOTAL, wxID_PEDVENDAFRAMEPESQITEMBTN, 
 wxID_PEDVENDAFRAMEPROX_VENDA, wxID_PEDVENDAFRAMEP_TOTAL, 
 wxID_PEDVENDAFRAMEP_UNITARIO, wxID_PEDVENDAFRAMEQUANTIDADE, 
 wxID_PEDVENDAFRAMEREMOVEITEMBTN, wxID_PEDVENDAFRAMESTATICBOX1, 
 wxID_PEDVENDAFRAMESTATICBOX2, wxID_PEDVENDAFRAMESTATICTEXT1, 
 wxID_PEDVENDAFRAMESTATICTEXT10, wxID_PEDVENDAFRAMESTATICTEXT2, 
 wxID_PEDVENDAFRAMESTATICTEXT3, wxID_PEDVENDAFRAMESTATICTEXT4, 
 wxID_PEDVENDAFRAMESTATICTEXT5, wxID_PEDVENDAFRAMESTATICTEXT6, 
 wxID_PEDVENDAFRAMESTATICTEXT7, wxID_PEDVENDAFRAMESTATICTEXT8, 
 wxID_PEDVENDAFRAMESTATICTEXT9, wxID_PEDVENDAFRAMETEXTCTRL1, 
 wxID_PEDVENDAFRAMETEXTCTRL2, 
] = [wx.NewId() for _init_ctrls in range(30)]

class pedVendaFrame(wx.Frame):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_PEDVENDAFRAME, name=u'pedVendaFrame',
              parent=prnt, pos=wx.Point(497, 146), size=wx.Size(762, 557),
              style=wx.DEFAULT_FRAME_STYLE, title=u'Pedido de Venda')
        self.SetClientSize(wx.Size(746, 519))

        self.staticText1 = wx.StaticText(id=wxID_PEDVENDAFRAMESTATICTEXT1,
              label=u'Pedido de Venda', name='staticText1', parent=self,
              pos=wx.Point(288, 16), size=wx.Size(159, 25), style=0)
        self.staticText1.SetFont(wx.Font(16, wx.SWISS, wx.NORMAL, wx.NORMAL,
              False, u'Tahoma'))

        self.staticBox1 = wx.StaticBox(id=wxID_PEDVENDAFRAMESTATICBOX1,
              label=u'Informa\xe7\xf5es do Pedido', name='staticBox1',
              parent=self, pos=wx.Point(16, 48), size=wx.Size(712, 152),
              style=0)

        self.Codigo = wx.StaticText(id=wxID_PEDVENDAFRAMECODIGO,
              label=u'Codigo', name=u'Codigo', parent=self, pos=wx.Point(40,
              88), size=wx.Size(34, 13), style=0)

        self.staticText4 = wx.StaticText(id=wxID_PEDVENDAFRAMESTATICTEXT4,
              label=u'Data', name='staticText4', parent=self, pos=wx.Point(40,
              120), size=wx.Size(24, 13), style=0)

        self.ped_venda_cod = wx.TextCtrl(id=wxID_PEDVENDAFRAMEPED_VENDA_COD,
              name=u'ped_venda_cod', parent=self, pos=wx.Point(96, 80),
              size=wx.Size(100, 21), style=0, value=u'')
        self.ped_venda_cod.SetEditable(True)
        self.ped_venda_cod.Enable(True)

        self.ped_venda_data = wx.TextCtrl(id=wxID_PEDVENDAFRAMEPED_VENDA_DATA,
              name=u'ped_venda_data', parent=self, pos=wx.Point(96, 112),
              size=wx.Size(100, 21), style=0, value=u'')
        self.ped_venda_data.SetEditable(False)
        self.ped_venda_data.Enable(False)

        self.prox_venda = wx.Button(id=wxID_PEDVENDAFRAMEPROX_VENDA,
              label=u'proxima venda', name=u'prox_venda', parent=self,
              pos=wx.Point(576, 112), size=wx.Size(120, 40), style=0)
        self.prox_venda.Bind(wx.EVT_BUTTON, self.OnProx_vendaButton,
              id=wxID_PEDVENDAFRAMEPROX_VENDA)

        self.staticBox2 = wx.StaticBox(id=wxID_PEDVENDAFRAMESTATICBOX2,
              label=u'Itens do Pedido', name='staticBox2', parent=self,
              pos=wx.Point(16, 232), size=wx.Size(712, 280), style=0)

        self.staticText2 = wx.StaticText(id=wxID_PEDVENDAFRAMESTATICTEXT2,
              label=u'Codigo', name='staticText2', parent=self, pos=wx.Point(32,
              288), size=wx.Size(34, 13), style=0)

        self.codigo = wx.TextCtrl(id=wxID_PEDVENDAFRAMECODIGO, name=u'codigo',
              parent=self, pos=wx.Point(32, 304), size=wx.Size(48, 21), style=0,
              value=u'')
        self.codigo.SetEditable(False)
        self.codigo.Enable(False)
        self.codigo.Bind(wx.EVT_KEY_UP, self.OnCodigoKeyUp)
        self.codigo.Bind(wx.EVT_TEXT_ENTER, self.OnCodigoTextEnter,
              id=wxID_PEDVENDAFRAMECODIGO)

        self.staticText8 = wx.StaticText(id=wxID_PEDVENDAFRAMESTATICTEXT8,
              label=u'Quantidade', name='staticText8', parent=self,
              pos=wx.Point(432, 288), size=wx.Size(57, 13), style=0)

        self.quantidade = wx.TextCtrl(id=wxID_PEDVENDAFRAMEQUANTIDADE,
              name=u'quantidade', parent=self, pos=wx.Point(432, 304),
              size=wx.Size(92, 21), style=0, value=u'')
        self.quantidade.SetEditable(False)
        self.quantidade.Enable(False)

        self.staticText9 = wx.StaticText(id=wxID_PEDVENDAFRAMESTATICTEXT9,
              label=u'Pre\xe7o Unitario', name='staticText9', parent=self,
              pos=wx.Point(528, 288), size=wx.Size(68, 13), style=0)

        self.p_unitario = wx.TextCtrl(id=wxID_PEDVENDAFRAMEP_UNITARIO,
              name=u'p_unitario', parent=self, pos=wx.Point(528, 304),
              size=wx.Size(92, 21), style=0, value=u'')
        self.p_unitario.SetEditable(False)
        self.p_unitario.Enable(False)

        self.staticText10 = wx.StaticText(id=wxID_PEDVENDAFRAMESTATICTEXT10,
              label=u'Pre\xe7o Total', name='staticText10', parent=self,
              pos=wx.Point(624, 288), size=wx.Size(55, 13), style=0)

        self.p_total = wx.TextCtrl(id=wxID_PEDVENDAFRAMEP_TOTAL,
              name=u'p_total', parent=self, pos=wx.Point(624, 304),
              size=wx.Size(88, 21), style=0, value=u'')
        self.p_total.SetEditable(False)
        self.p_total.Enable(False)

        self.pesqItemBtn = wx.Button(id=wxID_PEDVENDAFRAMEPESQITEMBTN,
              label=u'Pesquisa', name=u'pesqItemBtn', parent=self,
              pos=wx.Point(32, 256), size=wx.Size(75, 23), style=0)
        self.pesqItemBtn.Bind(wx.EVT_BUTTON, self.OnPesqItemBtnButton,
              id=wxID_PEDVENDAFRAMEPESQITEMBTN)

        self.insereItemBtn = wx.Button(id=wxID_PEDVENDAFRAMEINSEREITEMBTN,
              label=u'Insere', name=u'insereItemBtn', parent=self,
              pos=wx.Point(120, 256), size=wx.Size(75, 23), style=0)
        self.insereItemBtn.Bind(wx.EVT_BUTTON, self.OnInsereItemBtnButton,
              id=wxID_PEDVENDAFRAMEINSEREITEMBTN)

        self.removeItemBtn = wx.Button(id=wxID_PEDVENDAFRAMEREMOVEITEMBTN,
              label=u'Remove', name=u'removeItemBtn', parent=self,
              pos=wx.Point(208, 256), size=wx.Size(75, 23), style=0)
        self.removeItemBtn.Bind(wx.EVT_BUTTON, self.OnRemoveItemBtnButton,
              id=wxID_PEDVENDAFRAMEREMOVEITEMBTN)

        self.fechaPedido = wx.Button(id=wxID_PEDVENDAFRAMEFECHAPEDIDO,
              label=u'Fechar Pedido', name=u'fechaPedido', parent=self,
              pos=wx.Point(608, 248), size=wx.Size(91, 23), style=0)
        self.fechaPedido.Bind(wx.EVT_BUTTON, self.OnFechaPedidoButton,
              id=wxID_PEDVENDAFRAMEFECHAPEDIDO)

        self.listBox1 = wx.ListBox(choices=[], id=wxID_PEDVENDAFRAMELISTBOX1,
              name='listBox1', parent=self, pos=wx.Point(32, 336),
              size=wx.Size(680, 152), style=0)

        self.nome = wx.TextCtrl(id=wxID_PEDVENDAFRAMENOME, name=u'nome',
              parent=self, pos=wx.Point(88, 304), size=wx.Size(336, 21),
              style=0, value=u'')
        self.nome.SetEditable(False)
        self.nome.Enable(False)

        self.staticText5 = wx.StaticText(id=wxID_PEDVENDAFRAMESTATICTEXT5,
              label=u'Descri\xe7\xe3o', name='staticText5', parent=self,
              pos=wx.Point(88, 288), size=wx.Size(47, 13), style=0)

        self.staticText3 = wx.StaticText(id=wxID_PEDVENDAFRAMESTATICTEXT3,
              label=u'Valor Total do Pedido', name='staticText3', parent=self,
              pos=wx.Point(264, 88), size=wx.Size(102, 16), style=0)

        self.ped_venda_total = wx.TextCtrl(id=wxID_PEDVENDAFRAMEPED_VENDA_TOTAL,
              name=u'ped_venda_total', parent=self, pos=wx.Point(376, 80),
              size=wx.Size(100, 21), style=0, value=u'')
        self.ped_venda_total.SetEditable(False)
        self.ped_venda_total.Enable(False)

        self.textCtrl1 = wx.TextCtrl(id=wxID_PEDVENDAFRAMETEXTCTRL1,
              name='textCtrl1', parent=self, pos=wx.Point(376, 120),
              size=wx.Size(100, 21), style=0, value=u'')
        self.textCtrl1.Enable(False)
        self.textCtrl1.SetEditable(False)

        self.textCtrl2 = wx.TextCtrl(id=wxID_PEDVENDAFRAMETEXTCTRL2,
              name='textCtrl2', parent=self, pos=wx.Point(376, 160),
              size=wx.Size(100, 21), style=0, value=u'')
        self.textCtrl2.Enable(False)
        self.textCtrl2.SetEditable(False)

        self.staticText6 = wx.StaticText(id=wxID_PEDVENDAFRAMESTATICTEXT6,
              label=u'Valor Recebido', name='staticText6', parent=self,
              pos=wx.Point(296, 124), size=wx.Size(72, 13), style=0)

        self.staticText7 = wx.StaticText(id=wxID_PEDVENDAFRAMESTATICTEXT7,
              label=u'Troco', name='staticText7', parent=self, pos=wx.Point(336,
              160), size=wx.Size(28, 13), style=0)

    def __init__(self, parent, usuario):
        self.usuario = usuario
        self._init_ctrls(parent)
        c = Controle()
        data = c.get_data_atual()
        print self.usuario
        print self.usuario.get_nome()
        print self.usuario.get_cod()
        self.total = 0.0
        
        self.ped_venda_data.SetValue(data)

    def OnPButton(self, event):
        self.alterar_campos(True)
        
    def alterar_campos(self,VF):
        self.codigo.Enable(VF)
        self.codigo.SetEditable(VF)
        self.nome.Enable(VF)
        self.nome.SetEditable(VF)
        self.quantidade.Enable(VF)
        self.quantidade.SetEditable(VF)
        self.p_unitario.Enable(VF)
        self.p_unitario.SetEditable(VF)
        self.p_total.Enable(VF)
        self.p_total.SetEditable(VF)

    def OnFechaPedidoButton(self, event):
        self.alterar_campos(False)
        c = Controle()
        total = self.ped_venda_total.GetValue()
        self.textCtrl1.Enable(True)
        self.textCtrl1.SetEditable(True)
        self.textCtrl2.Enable(True)
        self.textCtrl2.SetEditable(True)     
        
        valor_rec = self.textCtrl1.GetValue()
        self.textCtrl2.SetValue(str(valor_rec - total))
        
        self.codigo.SetValue('')
        self.nome.SetValue('')
        self.quantidade.SetValue('')
        self.p_unitario.SetValue('')
        self.p_total.SetValue('')
   
        

    def OnPesqItemBtnButton(self, event):
        self.OnCodigoKeyUp(event)

    def OnInsereItemBtnButton(self, event):
        c = Controle()
        
        cod_ped_saida = self.ped_venda_cod.GetValue()
        cod_prod = self.codigo.GetValue()
        qtd_prod = self.quantidade.GetValue()
        preco_venda = self.p_unitario.GetValue()
        
        atributos = [cod_ped_saida, cod_prod, qtd_prod, preco_venda]
        
        c.salvar_itens_ped_saida(atributos)
        self.total = self.total + (float(preco_venda) * int(qtd_prod))
        self.ped_venda_total.SetValue(str(self.total))
        
        
        
        
                
        cod = self.codigo.GetValue()
        
        prod = c.procurar_produto_codigo(cod)
        
        def codd(x):
            x = str(x)
            while len(x)<15:
                x = x+' '
            return x
            
        def desc(x):
            x = str(x)
            while len(x)<60:
                x = x+' '
            return x
            
        def quant(x):
            x = str(x)
            while len(x)<15:
                x = x+' '
            return x
            
        def ptotal(x):
            x = str(x)
            while len(x)<15:
                x = x+' '
            return x
        
        def pvenda(x):
            x = str(x)
            while len(x)<15:
                x = x+' '
            return x      

        
        addd = codd(+prod[0])+desc(prod[1])+quant(self.quantidade.GetValue())+pvenda(prod[4])+ptotal(self.p_total.GetValue())
        
        self.listBox1.Append(addd)
        self.codigo.SetValue('')
        self.nome.SetValue('')
        self.quantidade.SetValue('')
        self.p_unitario.SetValue('')
        self.p_total.SetValue('')

    def OnRemoveItemBtnButton(self, event):
        event.Skip()

    def OnNovoBtnButton(self, event):
        self.alterar_campos(True)

    def OnCodigoKeyUp(self, event):
        cod = self.codigo.GetValue()
        print cod
        c = Controle()
        atributos = c.procurar_produto_codigo(cod)
        print atributos
        nome = atributos[1]
        qtd =  1
        preco_venda = atributos[4]
        self.nome.SetValue(str(nome))
        self.quantidade.SetValue(str(qtd))
        self.p_unitario.SetValue(str(preco_venda))
        self.p_total.SetValue(str(qtd*preco_venda))

    def OnCodigoTextEnter(self, event):
        self.OnCodigoKeyUp(event)

    def OnProx_vendaButton(self, event):
        c = Controle()
        self.alterar_campos(True)
        cod = self.ped_venda_cod.GetValue()
        data = self.ped_venda_data.GetValue()
        total = self.ped_venda_total.GetValue()
        cod_usuario = c.procurar_funcionario_cpf(self.usuario.get_cpf())
        cod_usuario = cod_usuario[0][0]
        print cod_usuario
        
        
        atributos = [cod, total, data, cod_usuario]
        novos_atributos = c.prox_venda(atributos)
        print novos_atributos
        print novos_atributos[0]
        print novos_atributos[1]
        print novos_atributos[2]
        
        #self.ped_venda_cod.SetValue(novos_atributos[0])
        #self.ped_venda_data.SetValue(novos_atributos[1])
        #self.ped_venda_total.SetValue(novos_atributos[2])
        
        
        #c.prox_venda()
        

    
